package Iagenda;

 
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.awt.SystemColor;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import org.orm.PersistentException;

import rmi.DBAgenda;
import rmi.Iagenda;
import agenda.Registro;
import agenda.RegistroDAO;

import java.awt.Label;
 
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.TextField;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

  public class Vagenda extends JFrame implements ActionListener  {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JLabel Lablnombre, LablTef;
	private JTextField textnombre ,textTef;
	private JButton btnAnterior,btnSiguiente,btnBorrar,btnBuscar,btnModificar,btnAnadir;
	private static Iagenda stub;
	private static String  host=null;
	private Registro [] usuarios;
	private int numReg;
	private static DBAgenda dbagenda;
	 

	 
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					Registry registry = LocateRegistry.getRegistry(host);
				    stub = (Iagenda) registry.lookup("Hello");
					Vagenda frame = new Vagenda();
					frame.setVisible(true);
					 
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	
	private void establecerPropiedades(){
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBackground(SystemColor.window);
		setResizable(false);
		setTitle("IS_KHALID  CHEKROUNI");
		setBounds(100, 100, 500, 400);
		setLocationRelativeTo(null);
	}


	
	private void establecerContenedorPrincipal(){
		contentPane = new JPanel();
		contentPane.setForeground(Color.BLUE);
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
	}

	/**
	 * Create the frame.
	 */
	public Vagenda() {
		establecerPropiedades(); // asignar propiedades del Frame
		establecerContenedorPrincipal(); // crear contenedor principal (contentPane)
		inicializarComponentes(); // crear resto de componentes

	}
	private void inicializarComponentes() {
		contentPane.setLayout(null);

		
		Label LablAgenda = new Label("Agenda");
		LablAgenda.setFont(new Font("Arial", Font.PLAIN, 20));
		LablAgenda.setBounds(214, 26, 96, 33);
		LablAgenda.setForeground(Color.RED);
		contentPane.add(LablAgenda);
		
		Label LablNombre = new Label("Nombre:");
		LablNombre.setBounds(20, 89, 61, 14);
		LablNombre.setForeground(Color.RED);
		LablNombre.setFont(new Font("Tahoma", Font.BOLD, 11));
		contentPane.add(LablNombre);
		//txtfNombre.setColumns(34);
		
		
		final TextField textnombre = new TextField();
		textnombre.setBounds(87, 89, 158, 22);
		contentPane.add(textnombre);
		
		Label LablTelf = new Label("Telefono:");
		LablTelf.setFont(new Font("Dialog", Font.PLAIN, 12));
		LablTelf.setBounds(19, 148, 62, 22);
		contentPane.add(LablTelf);
		
		final TextField textTef = new TextField();
		textTef.setBounds(87, 148, 158, 22);
		contentPane.add(textTef);
		
		JButton btnAnadir = new JButton("Anadir");
		btnAnadir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
					try{

                        if(textTef.getText().compareTo("")!=0);
						stub.anadir(textnombre.getText(),textTef.getText());
					 
				}
					catch  (Exception re){
						 re.printStackTrace();
					 }
				
				}
			
	
		});
		btnAnadir.setBounds(10, 220, 89, 23);
		contentPane.add(btnAnadir);
		
		JButton btnBuscar = new JButton("Buscar");
		btnBuscar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				buscar();
				 
			}
		});
		btnBuscar.setBounds(10, 275, 89, 23);
		contentPane.add(btnBuscar);
		
		JButton btnBorrar = new JButton("Borrar");
		btnBorrar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				try {
					 stub.buscar(textnombre.getText(), textTef.getText());
                    dbagenda.borrar(textTef.getText());
                    //buscar(textnombre.getText());
            } catch (RemoteException e2) {
                    // TODO Auto-generated catch block
                    e2.printStackTrace();
            } catch (PersistentException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
            }
			}
		});
		btnBorrar.setBounds(140, 220, 89, 23);
		contentPane.add(btnBorrar);
		
		JButton btnAnterior = new JButton("Anterior");
		btnAnterior.setEnabled(false);
	 
		btnAnterior.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				anterior();
			}
		});
		btnAnterior.setBounds(140, 275, 89, 23);
		contentPane.add(btnAnterior);
		
		JButton btnModificar = new JButton("Modificar");
		btnModificar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				modificar();
			}
		});
		btnModificar.setBounds(308, 220, 89, 23);
		contentPane.add(btnModificar);
		
		JButton btnSiguiente = new JButton("Siguiente");
		btnSiguiente.setEnabled(false);
		btnSiguiente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				siguiente();
			}
		});
		btnSiguiente.setBounds(308, 275, 89, 23);
		contentPane.add(btnSiguiente);
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		 
	}
	public void anadir(){
		try {
		    Registry registry = LocateRegistry.getRegistry(host);
		    Iagenda stub = (Iagenda) registry.lookup("Hello");
		    stub.anadir(textnombre.getText(),textTef.getText());
		  //  System.out.println("response: " + response);
		} catch (Exception e) {
		    System.err.println("Client exception: " + e.toString());
		    e.printStackTrace();
		}
		 JOptionPane.showMessageDialog(null, "Contacto anadido");
		 textnombre.setText("");
		 textTef.setText(""	);
	   
	}
	public void borrar(){
		
		try {
		    Registry registry = LocateRegistry.getRegistry(host);
		    Iagenda stub = (Iagenda) registry.lookup("Hello");
		     String response =stub.borrar(textnombre.getText(),textTef.getText());
		    System.out.println("response: " + response);
		} catch (Exception e) {
		    System.err.println("Client exception: " + e.toString());
		    e.printStackTrace();
		}
	    
	}
	 
	public void modificar(){
		try {
		    Registry registry = LocateRegistry.getRegistry(host);
		    Iagenda stub = (Iagenda) registry.lookup("Hello");
		      stub.modificar();
		   // System.out.println("response: " + response);
		} catch (Exception e) {
		    System.err.println("Client exception: " + e.toString());
		    e.printStackTrace();
		}
	    
	}
	public boolean buscar(String nombre,String telefono) throws NotBoundException{
		
		try {
			 Registry registry = LocateRegistry.getRegistry(host);
			    Iagenda stub = (Iagenda) registry.lookup("Hello");
			   usuarios= stub.buscar(textnombre.getText(),textTef.getText());
            
          
            if(usuarios.length>0)
            {
                    textTef.setText(usuarios[0].getTelefono());
                    
            }
            else
            {
                    textTef.setText("");
                    btnBorrar.setEnabled(false);
                    //System.
            }
    } catch (NumberFormatException e1) {
            e1.printStackTrace();
    } catch (RemoteException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    }
return true;
		/*try {
		    Registry registry = LocateRegistry.getRegistry(host);
		    Iagenda stub = (Iagenda) registry.lookup("Hello");
		   stub.buscar(textnombre.getText());
		    
		   // System.out.println("response: " + response);
		} catch (Exception e) {
		    System.err.println("Client exception: " + e.toString());
		    e.printStackTrace();
		}
	     */
	    
	    
	}
	
	public boolean anterior(){
		 numReg--;
		 textTef.setText(usuarios[numReg].getTelefono());
		 if(numReg-1<0)
			 btnAnterior.setEnabled(false);
		 if(!btnSiguiente.isEnabled())
             btnSiguiente.setEnabled(true);
     return true;
	    
	}
	
	public boolean siguiente(){
		numReg++;
		textTef.setText(usuarios[numReg].getTelefono());
		if(numReg+1 >= usuarios.length)
            btnSiguiente.setEnabled(false);
    if(!btnAnterior.isEnabled())
            btnAnterior.setEnabled(true);
    return true;
	}
	
	
}
